A ton of stuff has to happen in the background before any of these cool figures or analyses can be done. BUT I have cleverly hidden all that so that none of you have to see my messy code!
Put simply, my thesis looks at how body size of Gila Monsters, Heloderma suspectum varies across their range and how that relates to the varying environemtal conditions different populations experience.
Lets visualize the data we already have collected in the form of a histogram. SVL, or Snout Vent Length is one standard measure of body size for many lizards.
Gila Sample Size Distribution
Tired of straining your eyes to read shitty orange text? No sweat- heres a color change. Anyway, as you can see the vast majority of our speciman SVL’s are normally distributed around just shy of 300mm!There is a tailing end of specimans goning to the left which can be accounted for by any juviniles that are a part of the data set.Next lets actually cluser our data into populations that we can analyze and then map those!
Site Maps
Thought you were rid of orange, eh? Not so lucky. But look, maps! These show our clustered populations as determined by some coplicated spatial math (K-Means clustering) that is frankly not important to explain for this assignment. BUT the important bit is that we have our “populations” determined spatially. It was an incredible pain to figure out how to make these look nice next to one another in the Html document, but we got there. Lets look at a table of values, shall we?
Gila Clusters Summary Table
| Cluster | Abundances | HOURS | MeanSVL | MaxSVL |
|---|---|---|---|---|
| 1 | 259 | 2263 | 315.5 | 339 |
| 2 | 44 | 2644 | 299.6 | 310 |
| 3 | 8 | 2060 | 199.5 | 323 |
| 4 | 51 | 2278 | 346.5 | 359 |
| 5 | 34 | 2042 | 319.5 | 335 |
| 6 | 11 | 2308 | 265.1 | 337 |
| 7 | 38 | 1987 | 345.5 | 360 |
| 8 | 38 | 2141 | 323.3 | 350 |
| 9 | 28 | 2082 | 309.2 | 325 |
This table shows some relevant information displayed by cluster, including the number of specimans collected from each population, the number of hours of potential surface activity time an animal may experience in that population based on the climate (more complicated math related to my thesis), and two potential measurments of SVL for the population. “Mean SVL” referrs to the average SVL of the largest ten lizards within a population, and “Max SVL” just includes the size of the largest lizard. As you can see, unfortunatly not all areas have been sampled equaly. This can give us an idea where we need to be looking for additional samples, or at least explain why some of the data looks how it does
Gila Size Distributions By Cluster
This box plot looks at the largest 10 lizards within each population to just get a good idea of the range of sizes we are looking at. We can also use this opertunity to do some statistics! One part of my thesis hinges on the assumption that different populations of Gila monsters actually experience different size distributions. We can test this with a Kruskal Wallace test (because this data is non-parametric).
##
## Kruskal-Wallis rank sum test
##
## data: SVL by Cluster
## Kruskal-Wallis chi-squared = 64.74, df = 8, p-value = 5.432e-11
Our Kruskal-Wallis test confirms that based on these samples, different populations do in fact occure over different size distributions. But is that enough? We should do a post-hoc pairwise comparison test to see which clustered populations are significanly different from one another.
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
|---|---|---|---|---|---|---|---|---|
| 2 | 0.0007187 | NA | NA | NA | NA | NA | NA | NA |
| 3 | 0.0114858 | 0.0140128 | NA | NA | NA | NA | NA | NA |
| 4 | 0.0007187 | 0.0007187 | 0.0011303 | NA | NA | NA | NA | NA |
| 5 | 0.2007845 | 0.0015924 | 0.0054957 | 0.0007187 | NA | NA | NA | NA |
| 6 | 0.0749658 | 0.3647888 | 0.1130147 | 0.0007187 | 0.0335379 | NA | NA | NA |
| 7 | 0.0007187 | 0.0007187 | 0.0011303 | 0.9697360 | 0.0007187 | 0.0007187 | NA | NA |
| 8 | 0.1782972 | 0.0007187 | 0.0038187 | 0.0022382 | 0.7837040 | 0.0169484 | 0.0038187 | NA |
| 9 | 0.1137615 | 0.0351898 | 0.0114858 | 0.0007187 | 0.0412740 | 0.1404518 | 0.0007187 | 0.0140128 |
Another table, incredible. It looks like we have some populations that experience similar size distributions, and some that are significantly different. (I forgot to set a seed while coding this so which populations are assigned which numbers changes every time the code is run, FIX THIS FUTURE CONNOR)
Average Gila Population Size VS Potential Surface Activity Hours
This figure looks at how the average size of populations compares to the number of hours for potentail surface activity time based on the mechanistic model I will be using for my thesis. Important caviat is that the model has yet to be fully calibrated to Gila Monsters, so these results mean nothing for now and are basically just a place holder. We would run a GLM and Anova to look at the effect of surface activity hours on monster size, shown below, but again the results dont really mean anything at this time.
##
## Shapiro-Wilk normality test
##
## data: residuals(SVL.Hours)
## W = 0.8342, p-value = 0.04976
## Analysis of Deviance Table
##
## Model: gaussian, link: identity
##
## Response: MeanSVL
##
## Terms added sequentially (first to last)
##
##
## Df Deviance Resid. Df Resid. Dev
## NULL 8 16737
## HOURS 1 0.82663 7 16736
##
## Call:
## glm(formula = MeanSVL ~ HOURS, data = Centers)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -103.357 -2.327 12.966 20.572 43.990
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 306.136449 189.099541 1.619 0.149
## HOURS -0.001592 0.085613 -0.019 0.986
##
## (Dispersion parameter for gaussian family taken to be 2390.816)
##
## Null deviance: 16737 on 8 degrees of freedom
## Residual deviance: 16736 on 7 degrees of freedom
## AIC: 99.294
##
## Number of Fisher Scoring iterations: 2
Fun Stuff!
Some fun stuff and goodies at the end- here is a video of two Gila Monsters in combat taken by one of our colaborators up in Utah
And here is a gif of all the movements that the monsters at our field site made over the summer. This was made with the “MoveVis” package in R and then embedded here